// 假设你是一位很棒的家长，想要给你的孩子们一些小饼干。但是，每个孩子最多只能给一块饼干。
// 对每个孩子 i，都有一个胃口值 g[i]，这是能让孩子们满足胃口的饼干的最小尺寸；
// 并且每块饼干 j，都有一个尺寸 s[j] 。如果 s[j] >= g[i]，
// 我们可以将这个饼干 j 分配给孩子 i ，这个孩子会得到满足。
// 你的目标是尽可能满足越多数量的孩子，并输出这个最大数值

const findContentChildren = function (g: number[], s: number[]): number {
    // 二者都需要排序，排完后升序
    g.sort((a, b) => a - b);
    s.sort((a, b) => a - b);
    let count: number = 0; // 计数变量
    let gIndex: number = 0; // 当前指向孩子的指针
    for (let i = 0; i < s.length; i++) {
        // 如果当前饼干大于指向最小胃口的孩子，指针右移并增加计数
        if (s[i] >= g[gIndex]) {
            gIndex++;
            count++;
        }
    }
    return count;
};

// 这道题目的难度不大
// 思路是为了了满足更多的小孩，就不能造成饼干尺寸的浪费。
// 大尺寸的饼干既可以满足胃口大的孩子也可以满足胃口小的孩子，
// 所以大尺寸的饼干那么就应该优先满足胃口大的。
// 这里的局部最优就是大饼干喂给胃口大的，
// 充分利用饼干尺寸喂饱一个，全局最优就是喂饱尽可能多的小孩。
// 可以尝试使用贪心策略，先将饼干数组和小孩数组排序。
// 然后从后向前遍历饼干数组，用当前最小的饼干满足当前胃口最小的孩子，
// 如果小饼干满足不了就换下一个稍大一点的饼干来喂当前胃口最小的孩子，
// 遍历并统计满足小孩数量。
